package pare.servidor.so;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;

import pare.common.so.SO_RemoteObserver;
import pare.common.so.SO_RemoteSubject;

public class SO_RemoteSubjectImpl extends UnicastRemoteObject implements
		SO_RemoteSubject {
	
	public ArrayList<SO_RemoteObserver> observa = new ArrayList<SO_RemoteObserver>();
	
	public SO_RemoteSubjectImpl() throws RemoteException {
		//constructor
	}
		
	public void notificaObservadores(String reference) 
			throws RemoteException {
		for(int i = observa.size() - 1; i >= 0; i--) {
			observa.get(i).update(reference);
		}
	}

	public void registraObservador(SO_RemoteObserver observador)
			throws RemoteException {
		this.observa.add(observador);
	}

	public void removeObservador(SO_RemoteObserver observador)
			throws RemoteException {
		SO_RemoteObserver obs;
		obs = this.observa.get(0);
		this.observa.remove(observador);
	}
	
	public void removeTodos()
			throws RemoteException {
		this.observa.clear();
	}
	
}
